home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib14.dsk / SPELLING TUTOR.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  160 lines

  1. 10  REM  **********************
  2. 20  REM  * SPELLING TUTOR     *
  3. 30  REM  * BY BILL HEDGES     *
  4. 40  REM  * COPYRIGHT (C) 1983 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 100  REM 
  9. 110  CLEAR 
  10. 120 D$ =  CHR$(4)
  11. 130  PRINT D$;"BLOAD ALPHABET,A$84D0"
  12. 140  POKE 232,208: POKE 233,132
  13. 150  POKE 115,208: POKE 116,132
  14. 160  REM  W$ IS THE WORD RANDOMLY CHOSEN FROM WORD LIST.
  15. 170  REM  W$(21) IS ARRAY OF SPELLING WORDS TYPED IN BY TEACHER.
  16. 180  REM  W1$=THE WORD BEING SPELLING WITH MORE AND MORE LETTERS REMOVED FROM IT.
  17. 190  REM  W2$=TEMPORARY STORAGE OF WORD CHOSEN EACH TIME FOR RETRIEVAL.
  18. 200  REM  TW$=STUDENT ANSWER.
  19. 210  REM  Z$=CARRIAGE RETURN OR ANY KEY PRESS BY OPERATOR.
  20. 220  REM  CH=RND NO. OF CHARACTER IN A WORD TO BE REMOVED AS 1ST, 3RD, ETC.
  21. 230  REM  CN=LETTER OF WORD TO BE DRAWN IN HIRES.
  22. 240  REM  DO IS REDRAWING OF WORD ONE TIME FOR EACH LETTER WITH ONE LETTER LESS EACH TIME UNTIL SCREEN BLANK
  23. 250  REM  LE=LENGTH OF LONGEST WORD WHETHER FROM SPELLING LIST OR STUDENT INPUT.
  24. 260  REM  LE ENABLES DASHES IF STUDENT ANSWER IS LONGER OR SHORTER THAN RIGHT ANSWER.
  25. 270  REM  X=FRE(0) UUSED TO REMOVE STRING ACCUMULATION FROM STUDENT ANSWERS.
  26. 280  REM  SE(N) AND SP(N) ARE SWITCHES
  27. 290  REM  XN AND YN ARE COORDINATES OF EACH LETTER DRAWN
  28. 300  REM  R IS STUDENT ERROR COUNT.
  29. 310  REM  WN IS RANDOM NO. GENERATED TO SELECT SPELLING WORD.
  30. 320  REM  X=FRE(0) GETS RID OF ACCUMULATING STRINGS TO AVOID MEMORY FULL ERROR.
  31. 330  LOMEM: 17000
  32. 340  PRINT 
  33. 350  REM  LOMEM SET ABOVE GRAPHICS AREA TO AVOID INTERFERENCE WITH HGR
  34. 360 X =  FRE(0): HOME 
  35. 370  DIM W$(21): DIM SP(21)
  36. 380  VTAB 23: PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": VTAB 2: HTAB 15: PRINT "DIRECTIONS": PRINT 
  37. 390  PRINT "DEAR TEACHER:": PRINT 
  38. 400  PRINT "THIS PROGRAM ENABLES U TO TYPE IN": PRINT 
  39. 410  PRINT "UP TO 20 SPELLING WORDS FOR THE DAY'S": PRINT 
  40. 420  PRINT "SPELLING PRACTICE."
  41. 430  PRINT 
  42. 440  PRINT : PRINT "THE LAST WORD YOU TYPE IN SHOULD BE": PRINT 
  43. 450  PRINT "THE WORD 'DONE'."
  44. 460  PRINT : PRINT "EACH LESSON IS TEN WORDS."
  45. 470  VTAB 20: FLASH : INPUT "PRESS RETURN TO GO ON.";Z$: NORMAL 
  46. 480  HOME 
  47. 490  VTAB 5
  48. 500  PRINT "READY TO TYPE IN SPELLING LIST?
  49. 510  PRINT : INPUT "(Y OR N) ";Z$
  50. 520  IF  LEFT$(Z$,1) = "Y"  THEN 550
  51. 530  IF  LEFT$(Z$,1) = "N"  THEN  PRINT : PRINT "THAT'S ALL.": END 
  52. 540  GOTO 510
  53. 550 N = 0
  54. 560 N = N +1
  55. 570  IF N = 21  THEN  PRINT "NO MORE WORDS ALLOWED IN THIS LIST.": PRINT : PRINT "YOU HAVE 20.": GOTO 680
  56. 580  HOME : VTAB 5: PRINT "REMEMBER TO TYPE THE WORD 'DONE'
  57. 590  PRINT : PRINT "AS THE LAST WORD IN YOUR SPELLING LIST."
  58. 600  PRINT : PRINT 
  59. 610  PRINT : PRINT "TYPE IN WORD ";N;".": PRINT : INPUT "THE WORD IS? ";W$(N)
  60. 620  PRINT 
  61. 630  IF  LEN(W$(N)) >10  THEN  PRINT "MAXIMUM WORD LENGTH IS TEN LETTERS.": PRINT : PRINT "CHOOSE ANOTHER.": GOTO 610
  62. 640  PRINT : IF  LEN(W$(N)) < = 1  THEN  PRINT "WORDS MUST HAVE AT LEAST ": PRINT : PRINT "TWO LETTERS. TRY ANOTHER.": GOTO 610
  63. 650  IF W$(N) = "DONE"  THEN 680
  64. 660  GOTO 560
  65. 670  PRINT 
  66. 680  PRINT : PRINT "MISTAKES? TYPE WORDS OVER?"
  67. 690  PRINT : INPUT "(Y OR N)";Z$
  68. 700  IF  LEFT$(Z$,1) = "Y"  THEN  CLEAR : GOTO 550
  69. 710  IF  LEFT$(Z$,1) = "N"  THEN 730
  70. 720  GOTO 680
  71. 730  HOME : VTAB 5: PRINT "STUDENTS CAN NOW PRACTICE "
  72. 740 R = 0
  73. 750  PRINT : PRINT "SPELLING THE WORDS."
  74. 760  VTAB 21: FLASH : INPUT "PRESS RETURN WHEN READY";Z$: NORMAL : HOME 
  75. 770 NW = N -1
  76. 775  REM  NEXT STATEMENT USED AS SWITCH
  77. 780  FOR J = 1 TO NW:SP(J) = 1: NEXT J
  78. 790  IF NW <10  THEN  FOR I = 1 TO NW: GOTO 810
  79. 800  FOR I = 1 TO 10
  80. 810 WN =  INT(NW * RND(1)) +1
  81. 820  REM  THIS INSURES SAME WORD NOT SELECTED TWICE.
  82. 830  IF SP(WN) = 0  THEN 810
  83. 840 SP(WN) = 0
  84. 850 W$ = W$(WN)
  85. 860 W2$ = W$(WN)
  86. 870  HGR : HCOLOR= 3: ROT= 0: SCALE= 3
  87. 880 XN = 10:YN = 30
  88. 890 LT =  LEN(W$)
  89. 900  REM  THIS DESIGNED TO AVOID ELIMINATING SAME LETTER.
  90. 910  FOR J = 1 TO LT:SE(J) = 1: NEXT J
  91. 920  REM  NEXT STATEMENT IS TO EVENTUALLY PUT IN AS MANY BLANKS AS THE WORD HAS LETTERS.
  92. 930  FOR DO = 1 TO LT
  93. 940  FOR CN = 1 TO LT
  94. 950  HOME 
  95. 960  DRAW  ASC( MID$ (W$,CN,1)) -31 AT XN,YN
  96. 970 XN = XN +25
  97. 980  NEXT CN
  98. 990 XN = 10:YN = 60
  99. 1000  VTAB 21: INPUT "TYPE THE WORD.";TW$
  100. 1010  VTAB 22: IF  LEN(TW$) >10  THEN  PRINT "YOUR WORD IS TOO LONG. TRY AGAIN.": GOTO 1000
  101. 1020  VTAB 22: IF  LEN(TW$) < = 1  THEN  PRINT "YOUR WORD IS TOO SHORT. TRY AGAIN.": GOTO 1000
  102. 1030  FOR CN = 1 TO  LEN(TW$)
  103. 1040  DRAW  ASC( MID$ (TW$,CN,1)) -31 AT XN,YN
  104. 1050 XN = XN +25
  105. 1060  IF XN >260  THEN  PRINT "WORD IS TOO LONG. TRY AGAIN.": GOTO 780
  106. 1070  NEXT CN
  107. 1080  IF TW$ = W2$  THEN 1240
  108. 1090 R = R +1
  109. 1100  REM  START COMPARING EACH LETTER IN STUDENT ANSWER WITH RIGHT ANSWER 'W2$'.
  110. 1110 XN = 10:YN = 90
  111. 1120  IF  LEN(W$) > =  LEN(TW$)  THEN LE =  LEN(W$): GOTO 1140
  112. 1130 LE =  LEN(TW$)
  113. 1140  FOR CN = 1 TO LE
  114. 1150  IF  MID$ (TW$,CN,1) =  MID$ (W2$,CN,1)  THEN  DRAW  ASC( MID$ (TW$,CN,1)) -31 AT XN,YN: GOTO 1170
  115. 1160  DRAW  ASC("-") -31 AT XN,YN
  116. 1170 XN = XN +25
  117. 1180  NEXT CN
  118. 1190  VTAB 22
  119. 1200  PRINT "WRONG! SEE THE MISSING LETTERS.": PRINT : PRINT 
  120. 1210  PRINT "EACH DASH IS A MISTAKE.": PRINT 
  121. 1220  INPUT "RETURN TO GO ON.";Z$
  122. 1230  CALL 62450:XN = 10:YN = 30: GOTO 940
  123. 1240  REM  WE GO ON FROM HERE TO REMOVE BLANKS
  124. 1250  PRINT 
  125. 1260  VTAB 22: PRINT "RIGHT!": INPUT "PRESS RETURN TO GO ON.";Z$
  126. 1270  PRINT 
  127. 1275  REM  CH IS RANDOMLY SELECTED LETTER OR CHARACTER TO BE REMOVED FROM THE WORD.
  128. 1280 CH =  INT(LT * RND(1) +1)
  129. 1290  REM  AVOIDS REPEATING REMOVAL OF A BLANK ALREADY IN A WORD
  130. 1300  IF SE(CH) < >1  THEN 1280
  131. 1310 SE(CH) = 0
  132. 1320 X$ = " "
  133. 1325  REM  NEXT STATEMENT INSERTS BLANK
  134. 1330  IF CH = 1  THEN W$ = X$ + RIGHT$(W$,LT -1): GOTO 1350
  135. 1340 W$ =  LEFT$(W$,CH -1) +X$ + MID$ (W$,CH +1)
  136. 1350  PRINT 
  137. 1360 XN = 10:YN = 30
  138. 1370  CALL 62450: NEXT DO
  139. 1380  PRINT 
  140. 1390  PRINT "NOW TYPE THE COMPLETE WORD FROM MEMORY.": INPUT TW$
  141. 1400  PRINT : PRINT 
  142. 1410  IF TW$ = W2$  THEN  PRINT "YOU NOW KNOW HOW TO SPELL '";TW$;"'.": GOTO 1470
  143. 1420  PRINT "SORRY. DID YOU CONCENTRATE?"
  144. 1430  INPUT "RETURN TO GO ON.";Z$
  145. 1440  PRINT : PRINT 
  146. 1450 R = R +1: VTAB 24: PRINT "THE WORD WAS '";W2$;"'."
  147. 1460  PRINT : INPUT "PRESS RETURN TO TRY IT AGAIN.";Z$: GOTO 1390
  148. 1470  INPUT "RETURN TO GO ON.";Z$: NEXT I
  149. 1480  PRINT 
  150. 1490  IF NW <10  THEN  PRINT "YOU MADE ";R;" ERRORS ON THE ";NW" WORDS.": GOTO 1510
  151. 1500  PRINT "YOU MADE ";R;" ERRORS ON THE TEN WORDS."
  152. 1510  PRINT 
  153. 1520  INPUT "MORE PRACTICE? (Y OR N)";Z$
  154. 1530  IF  LEFT$(Z$,1) = "Y"  THEN  TEXT : HOME :X =  FRE(0): GOTO 730
  155. 1540  IF  LEFT$(Z$,1) < >"N"  THEN 1520
  156. 1550  PRINT 
  157. 1560  VTAB 22: PRINT  FRE(0)
  158. 1570  HOME : TEXT : PRINT "THAT'S ALL!": END 
  159. 1580  PRINT : PRINT : INPUT "RETURN TO GO ON.";Z$
  160. 1590  PRINT "YOU MADE ";R;" ERRORS ON THE ";NW;" WORDS."